import { getToken, removeToken, setToken, 
  setTimeStamp,removeTimeStamp,
  setUserType,getUserType,removeUserType,
  setUserID, removeUserID,
  setUserName,removeUserName
} from '@/utils/auth'
import { Message } from 'element-ui'
import { login } from '@/api/user'
// import { setTimeStamp } from '@/utils/auth'
export default {
  namespaced: true,
  state: {
    token: getToken(), // 初始化token
    userType: {}, // 角色
  },
  mutations: {
    // 设置token
    setToken(state, token) {
      state.token = token // 改变state里面的token
      setToken(token) // 持久化token，缓存到浏览器
    },
    // 删除token
    removeToken(state) {
      state.token = null
      removeToken()
    },
    // 设置type身份
    setType(state, type) {
      // state.userType = {'userType' : type}
      setUserType(type)
    },
    // 删除type身份
    removeType(state) {
      // state.userType = {}
      removeUserType()
    },
    // 移除时间
    removeTimeStamp(){
      removeTimeStamp()
    },

    // 存入角色id
    saveID(state,id){
      setUserID(id)
    },

    // 移除用户id
    removeID(){
      removeUserID()
    },

     // 存入用户名称
     saveUserName(state,userName){
      setUserName(userName)
    },

    // 移除用户名称
    removeUserName(){
      removeUserName()
    }
  },
  actions: {
    // 通过登录接口获取token
    async login(context, data) {
      const result = await login(data)
      console.log(result)
      Message.success('登陆成功')
      // 设置token
      context.commit('setToken', result.token)
      // 获取用户的角色
      context.commit('setType', result.userType)
      // 存入角色id
      context.commit('saveID',result.id)
       // 存入用户名称
      context.commit('saveUserName',result.userName)
      setTimeStamp() // 登录成功后写入当前时间
    },

    // 登出功能
    logout(context) {
      // 删除token
      context.commit('removeToken')
      // 删除type身份
      context.commit('removeType')
      // 移除时间
      context.commit('removeTimeStamp')
      // 移除用户id
      context.commit('removeID')
       // 移除用户名称
       context.commit('removeUserName')
      Message.success('退出登录')
    }

  }
}
